package com.quyunshuo.module.home.view

import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.graphics.Rect
import android.util.AttributeSet
import android.view.View
import com.quyunshuo.androidbaseframemvvm.common.ext.px

val CIRCLE_COLOR = Color.parseColor("#D81B60")
val HIGHLIGHT_COLOR = Color.parseColor("#2196F3")
val RING_WIDTH = 20f.px
val RADIUS = 150f.px

/**
 * 绘制文字
 */
class SportView(context: Context?, attrs: AttributeSet?) : View(context, attrs) {
    private val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
        textAlign = Paint.Align.CENTER
        textSize = 100f.px
    }
    private val bound = Rect()
    private val fontMetrics = Paint.FontMetrics()
    override fun onDraw(canvas: Canvas) {
        // 绘制背景圆环
        paint.style = Paint.Style.STROKE   // 设置画笔为描边模式（非填充）
        paint.color = CIRCLE_COLOR         // 圆环颜色（假设CIRCLE_COLOR是预定义的颜色值）
        paint.strokeWidth = RING_WIDTH     // 圆环的线宽（假设RING_WIDTH是线宽值，如5f.px）

        // 绘制一个圆形作为背景（圆心在View中心，半径为RADIUS）
        canvas.drawCircle(width / 2f, height / 2f, RADIUS, paint)


        // 绘制高亮进度弧线
        paint.color = HIGHLIGHT_COLOR      // 高亮颜色（如蓝色）
        paint.strokeCap = Paint.Cap.ROUND  // 设置线段端点为圆角（使弧线两端圆滑）

        // 定义绘制弧线的矩形区域（与背景圆环位置相同）
        val left = width / 2f - RADIUS
        val top = height / 2f - RADIUS
        val right = width / 2f + RADIUS
        val bottom = height / 2f + RADIUS

        // 绘制弧线（参数详解见下文）
        canvas.drawArc(
            left, top, right, bottom, // 弧线所在的矩形区域（与背景圆环一致）
            -90f,                     // 起始角度（-90度对应12点钟方向）
            225f,                     // 扫过的角度（顺时针225度）
            false,                    // 是否连接到圆心（false表示只画弧线，不闭合）
            paint
        )

        //绘制文字
        paint.style = Paint.Style.FILL
//        paint.getTextBounds("abab",0,"abab".length,bound)//静态
//        canvas.drawText("abab",width/2f,height/2f-(bound.top+bound.bottom)/2f,paint)

        //动态
        paint.getFontMetrics(fontMetrics)
        canvas.drawText("abab",width/2f,height/2f-(fontMetrics.ascent+fontMetrics.descent)/2f,paint)

        //绘制文字2
        paint.textAlign = Paint.Align.LEFT
        paint.getFontMetrics(fontMetrics)
        canvas.drawText("bcbc",0f,-fontMetrics.top,paint)//为什么要-fontMetrics.top？因为他会以0为基准点，写字，但基准点是文字的底部，所以会写到上面去。
    }
}